// import com.alibaba.druid.sql.dialect.oracle.ast.OracleSegmentAttributesImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "../dialect/oracle/ast/OracleSegmentAttributesImpl.h"

class SQLName;
class SQLPartitionValue;
class SQLExpr;
class SQLASTVisitor;

class SQLSubPartition : public OracleSegmentAttributesImpl
{
public:
  SQLName_ptr name;
  SQLPartitionValue_ptr values;
  SQLName_ptr tableSpace;

  // for mysql
  SQLExpr_ptr dataDirectory;
  SQLExpr_ptr indexDirectory;
  SQLExpr_ptr maxRows;
  SQLExpr_ptr minRows;
  SQLExpr_ptr engine;
  SQLExpr_ptr comment;

  SHAREDOBJECT(SQLSubPartition);
  SQLName_ptr getName();

  void setName(SQLName_ptr name);

  SQLPartitionValue_ptr getValues();

  void setValues(SQLPartitionValue_ptr values);

  SQLName_ptr getTableSpace();

  void setTableSpace(SQLName_ptr tableSpace);

  SQLExpr_ptr getDataDirectory();

  void setDataDirectory(SQLExpr_ptr dataDirectory);

  SQLExpr_ptr getIndexDirectory();

  void setIndexDirectory(SQLExpr_ptr indexDirectory);

  SQLExpr_ptr getMaxRows();

  void setMaxRows(SQLExpr_ptr maxRows);

  SQLExpr_ptr getMinRows();

  void setMinRows(SQLExpr_ptr minRows);

  SQLExpr_ptr getEngine();

  void setEngine(SQLExpr_ptr engine);

  SQLExpr_ptr getComment();

  void setComment(SQLExpr_ptr comment);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  // SQLSubPartition* clone() ;
  virtual SQLObject_ptr clone();
};
